The invention relates to bar code readers and, in particular, to a bar code reading system for reliably reading bar code information in situations where the reading speed is changing rapidly.
The use of scanning techniques to retrieve information from machine-readable labels, badges, documents, etc., is gaining acceptance in a wide variety of applications due to the fact that bar codes are well suited for a variety of data entry, identification, and programming needs. It follows that bar code systems using optical scanning techniques increasingly are filling the need for fast, accurate data entry. The ready availability of microprocessors and associated systems for processing data simplifies the task of decoding information presented in bar code format, and in preparing it for transmission to associated data utilization devices. In addition, very accurate bar code systems are available which find use in apparatus wherein a corresponding high accuracy is required in the identification of items upon which the bar code is printed. The most common type of data stored in bar code is thus item identification information used for inventory control, work-in-progress tracking, distribution tracking, and other material management functions. In these applications, the bar code symbol may represent a product number, serial number, or an alphanumeric description of the item.
Basically, bar code data are stored as a series of bars and spaces which are printed on a medium, wherein the bar code is scanned by moving a small spot of light across the bars and spaces with a smooth, continuous (that is, constant) scanning motion. The output of the scanner is determined by the difference in the reflectivity of the bars and spaces. The data stored in the bar code symbol are retrieved by the movement of the spot of the optical scanner across the symbol, or vice versa.
In general, scanners are categorized as either stationary scanners, or movable scanners which include hand-held and machine-held scanners. In the movable scanners, the relative movement of the scanner and symbol can be accomplished manually as by a human operator moving a hand-held wand or automatically, as in a conveyor system which moves the symbol past a fixed beam of light, in a light beam system which scans a symbol via a scanning light beam, or in a machine-held wand system wherein the machine mechanically moves the wand past the symbol. In all such scanning systems, a substantially smooth and constant scanning speed is required in order to read the bar code symbol reliably. Once the data have been retrieved as a relatively constant serial stream of data pulses, it is translated by a decoder into computer readable data, is error-checked, and is transmitted to the host computer system for subsequent use.
Typically, bar code reader systems convert wide and narrow bar (and space) information into time information in the digital domain, wherein the bar code information is scanned with a smooth continuous motion. However, this approach does not yield reliable reading when the scanning speed is rapidly changing, since the speed changes add large time variations to the assigned time periods which identify wide bars and spaces and narrow bars and spaces, thus masking the true time lengths of the bars and spaces along the direction of scan movement. Thus, for example, if the scanner is traveling at a subnominal speed, a narrow bar readily may be detected as a wide bar, while at a supernominal speed a wide bar readily may be detected as a narrow bar. It follows that in, for example, present hand-held wand types of systems, the operator must be trained to use a substantially smooth, continuous motion when scanning the bar code information, or invalid data will be produced in the readout of the symbol. Likewise, present machine-held wand systems and optical light beam scan systems also are driven at a substantially smooth, continuous scanning speed to insure reliably reading the symbol.
However, there are applications, employing for example a machine-held movable wand, wherein it is desirable for the reader scanning mechanism to rapidly accelerate from stop to high speed, and/or rapidly decelerate from a high speed to stop, while attempting to scan bar code information. It follows that in such systems, the bar code reading mechanism is not traveling with the smooth, continuous motion heretofore required by present bar code reader systems, whereby the rapidly changing scanning speeds result in an unreliable readout of the bar code information.
Accordingly, it would be highly desirable to provide a bar code reader system which reliably reads bar code information regardless of changes in the scanning speed during the read out process.
The invention overcomes the disadvantages of the present bar code readers discussed above, by providing a bar code reading technique capable of reliably retrieving bar code information while scanning a bar code symbol at rapidly changing speeds, or at different constant speeds. To this end, the invention provides a system for removing the time element from the bar code data read out technique, whereby the widths of the bars and spaces are represented by the number of tach pulses accumulated between their successive boundaries, that is, during each data cell defined by the transitions. Thus, in the invention, a bar or space is a dimension or distance being measured, and the period of the tach pulses defines the unit of measurement distance used to measure the bar or space dimension, wherein the period between tach pulses changes inversely with the scanning speed, that is, is an inverse function of the rate of scanning. It follows that the time dimension is removed from the read process by counting the number of tach pulses which occur between bar transitions.
Accordingly, a tach generator supplies a stream of pulses which are indicative of the speed of the bar code reader as it scans a bar code symbol in a scan direction. The data signal from the bar code reader is supplied to a transition detector which supplies transition pulses for each boundary between a bar and a space, and a space and a bar, of the symbol. A data counter counts the stream of pulses which occur between successive transitions and provides an accumulated count for each data cell. By way of example, a wide bar or space herein may be represented by 30 tach pulses, while a narrow bar or space may be represented by a relatively smaller number of 10 tach pulses. The successive counts representing the data cell widths are loaded into respective address locations in memory until data for an entire symbol is in memory. The data is read from memory by microprocessor control and a determination is made whether a data cell is wide or narrow by making a comparison of the counts with respective preset count values. The complete sequence of the bar and space data of each symbol then is decoded by the microprocessor to yield the bar code encoded numbers contained in the symbols.
As further discussed below, the stream of pulses may be supplied by devices other than a tachometer, and may include devices such as odometer devices which generate pulses at a rate indicative of their movement across a medium. Likewise, in bar code formats, information may be contained in bars only, in spaces only, or in both bars and spaces. Thus the terms bars and spaces are used equivalently herein. In addition, a given bar code encoding technique may not provide readily identifiable transitions at the boundaries of each data cell, i.e., bar or space, but may provide boundaries at other sub-portions of the bar code symbol. The invention contemplates use with the latter encoding techniques as well, as described below. Still further, the invention technique contemplates use in a software environment, as well as in the hardware environment in which is it described herein by way of example only.